home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / utilmus / prtrk352.lha / ProTracker / Source / PED.asm < prev    next >
Assembly Source File  |  1996-05-02  |  21KB  |  1,160 lines

  1. ;*********************************************
  2. ;* Rewritten PresetEditor for Protracker Pro *
  3. ;* ASM= ASM One/Oma                          *
  4. ;* CPU= Any                                  *
  5. ;* Ver= 1991 Amiga Freelancers PT1.1         *
  6. ;*       1996 TEC Design debugged and impr.  *
  7. ;*  1.2.96 = reworked text outputs (debug)   *
  8. ;*  2.2.96 = debugged dbf loops              *
  9. ;*  6.2.96 = debugged insertpreset for use   *
  10. ;*           spaces in filenames             *
  11. ;* 12.3.96 = reworked whole screen design    *
  12. ;*********************************************
  13.  
  14.  
  15. ;-------------------- PED ---------------------
  16. PresetEditor:    CLR.B    RawKeyCode
  17.         CMP.B    #4,CurrScreen
  18.         BNE.S    startmeup
  19.         JMP    PED_Exit
  20.  
  21. startmeup:    JSR    TopExit            ;included
  22.         JSR    WaitForButtonUp
  23.         MOVE.B    #4,CurrScreen
  24.         ;SF    ScopeEnable
  25.         ST    NoSampleInfo
  26.         BSR.B    SwapPresEdScreen
  27.         BSR.W    DctMainScr1_7
  28.         BEQ.W    pedexi2
  29.  
  30. PED_Refresh:    CLR.W    PED_Action
  31. PED_Refresh2:    MOVEA.L    TextBplPtr(PC),A0
  32.         MOVE.W    #$0987,D0
  33. pedloop:    CLR.L    (A0)+
  34.         DBRA    D0,pedloop
  35.         JSR    SetNormalPtrCol
  36.         BSR.W    ShowPEDnumbers
  37.         BSR.W    ShowPresetNames
  38.         BSR.W    PED_OneDown
  39.         BSR.W    PED_OneUp
  40.         RTS
  41.         
  42. SwapPresEdScreen:
  43.     MOVE.L    DecompMemPtr,D0
  44.     BEQ.B    speds2
  45.     MOVEA.L    D0,A1
  46.     BSR.B    speds3
  47.     JMP    FreeDecompMem
  48.  
  49. speds2:    LEA    PresetEdData,A0
  50.     JSR    Decompact
  51.     BNE.B    speds3
  52.     RTS
  53.  
  54. speds3:    LEA    zeropoint,A0
  55.     MOVEQ    #1,D2
  56.     MOVEQ    #0,D3
  57. spesloop1:
  58.     MOVE.W    #$04C3,D0
  59. spesloop2:
  60.     MOVE.L    (A0),D1
  61.     MOVE.L    (A1),(A0)+
  62.     ADDI.W    #4,D3
  63.     CMPI.W    #$0028,D3
  64.     BNE.B    spesloop3
  65.     LEA    $0028(A0),A0
  66.     MOVEQ    #0,D3
  67. spesloop3:
  68.     MOVE.L    D1,(A1)+
  69.     DBRA    D0,spesloop2
  70.     LEA    $29E0(A0),A0
  71.     DBRA    D2,spesloop1
  72.     MOVEQ    #-1,D0
  73.     RTS
  74.  
  75. ;-------------- rewritten for mousetable ------------
  76. CheckPresEdGadgs:
  77.     MOVEM.W    (MouseX2),D0/D1
  78.     LEA    PEDGadgData,A0
  79.     JSR    ConvMousTabl
  80.     TST.W    D2
  81.     BEQ.W    peddygto
  82.  
  83.     CMP.W    #$11,D2
  84.     BEQ.W    PED_Exit
  85.  
  86.     CMP.W    #01,D2
  87.     BEQ.W    CheckPEDnames        ;hit a filename
  88.     CMP.W    #02,D2
  89.     BEQ.W    PED_GotoPLST
  90.     CMP.W    #03,D2
  91.     BEQ.W    PED_DeleteDisk
  92.     CMP.W    #04,D2
  93.     BEQ.W    PED_Delete
  94.     CMP.W    #05,D2
  95.     BEQ.W    PED_Insert
  96.     CMP.W    #06,D2
  97.     BEQ.W    PED_AddPathGadg
  98.     CMP.W    #07,D2
  99.     BEQ.W    PED_ClearPLST
  100.     CMP.W    #08,D2
  101.     BEQ.W    PED_EnterPath
  102.     CMPI.W    #09,D2
  103.     BEQ.W    PED_Print
  104.     CMPI.W    #$0A,D2
  105.     BEQ.W    WritePLST
  106.     CMPI.W    #$0B,D2
  107.     BEQ.S    xLoadPLST
  108.  
  109.     CMP.W    #$0F,D2
  110.     BEQ.W    PED_Bottom
  111.     CMP.W    #$0D,D2
  112.     BEQ.W    PED_OneDown
  113.     CMP.W    #$10,D2
  114.     BEQ.S    PED_Exit
  115.     CMP.W    #$0C,D2
  116.     BEQ.W    PED_OneUp
  117.     CMP.W    #$0E,D2
  118.     BEQ.W    PED_Top
  119.     CMP.W    #$12,D2
  120.     BEQ.W    PED_Disk
  121.  
  122. peddygto:
  123.         JSR    ChkMainright
  124.     RTS
  125.  
  126. xLoadPLST:    BSR.W    LoadPLST
  127.         MOVE.W    #1,PEDPos
  128.         BRA.W    PED_Refresh
  129.  
  130. PED_GotoPLST:    BSR.B    PED_Exit
  131.         BRA.W    PLST
  132.  
  133. PED_Exit:
  134.     MOVE.L    #$FFFFFFFF,lbL001AFC
  135.     MOVE.L    #$FFFFFFFF,lbL001B00
  136.     MOVE.L    #$FFFFFFFF,lbL001B04
  137.     CMPI.W    #$FFFF,lbW000E14
  138.     JSR    WaitForButtonUp
  139.     BSR.W    PLSTCheckNum
  140.     BSR.W    SwapPresEdScreen
  141.     MOVEA.L    TextBplPtr(PC),A0
  142.     MOVE.W    #$0987,D0
  143. pedeloop:
  144.     CLR.L    (A0)+
  145.     DBRA    D0,pedeloop
  146.     CLR.B    RawKeyCode
  147. pedexi2:
  148.     JSR    DisplayMainAll
  149.     RTS
  150. PED_AddPathGadg:
  151.     TST.L    PLSTmem
  152.     BNE.B    pedawok
  153.     BSR.W    AllocPLST
  154.     TST.L    PLSTmem
  155.     BEQ.W    PLSTMemErr
  156. pedawok:
  157.     MOVEA.L    DOSBase(PC),A6
  158.     MOVE.L    #PEdDefaultPath,D1
  159.     MOVEQ    #-2,D2
  160.     JSR    -$0054(A6)            ;lock Dir
  161.     MOVE.L    D0,FileLock
  162.     BEQ.W    UnlockReadPath
  163.     JSR    SetDiskPtrCol
  164.     LEA    AddingPathText(PC),A0
  165.     BSR.W    ShowStatusText
  166.     MOVEA.L    DOSBase(PC),A6
  167.     MOVE.L    FileLock(PC),D1
  168.     MOVE.L    #FileInfoBlock,D2
  169.     JSR    -$0066(A6)            ;Examine
  170.     TST.L    D0
  171.     BPL.W    UnlockReadPath
  172.     TST.L    FIB_EntryType
  173.     BPL.B    CheckPathDirName
  174.     BSR.W    AddPreset
  175.     BRA.S    IsPLSTFull
  176.  
  177. CheckPathDirName:
  178.     CMP.B    #'-',FIB_FileName+2
  179.     BNE.S    IsPLSTFull
  180.     MOVE.B    FIB_FileName+3,SndDiskNum0
  181.     MOVE.B    FIB_FileName+4,SndDiskNum1
  182.     BSR.W    ShowPEDnumbers
  183. IsPLSTFull:
  184.     MOVE    PresetTotal(PC),D0
  185.     CMP    MaxPLSTEntries,D0
  186.     BCS.S    ReadPathNext
  187.     BSR.W    PLSTisFull
  188.     BRA.W    ReadPathEnd
  189.  
  190. ReadPathNext:
  191.     MOVEA.L    DOSBase(PC),A6
  192.     MOVE.L    FileLock(PC),D1
  193.     MOVE.L    #FileInfoBlock,D2
  194.     JSR    -$006C(A6)        ;ExNext
  195.     TST.L    D0
  196.     BPL.W    ReadPathEnd
  197.     BTST    #2,$00DFF016
  198.     BEQ.W    ReadPathEnd
  199.     TST.L    FIB_EntryType
  200.     BPL.B    IsPLSTFull
  201.     CMPI.L    #'.inf',FIB_FileName
  202.     BEQ.B    IsPLSTFull
  203.     CMP.L    #'.inf',FIB_FileName+4
  204.     BEQ.B    IsPLSTFull
  205.     LEA    FIB_FileName,A0
  206.     MOVEQ    #$1C,D0
  207.  
  208. ckcou:    CMP.B    #$2E,(A0)+
  209.     BEQ.W    CouldBeInfo
  210.     DBRA    D0,ckcou
  211.  
  212. rpnskip:
  213.     CLR    PresetRepeat
  214.     MOVE    #1,PresetReplen
  215.     LEA    PEdDefaultPath,A0    ;get pointer to samples
  216.     JSR    CopyPath
  217.     LEA    FIB_FileName,A0
  218.  
  219. ;--------- raw test ok, now check for IFF
  220. rpncpfn:
  221.     MOVE.B    (A0)+,(A1)+
  222.     BNE.B    rpncpfn
  223.     MOVE.L    #FileName,D1
  224.     MOVE.L    #$000003ED,D2
  225.     MOVEA.L    DOSBase(PC),A6
  226.     JSR    -$001E(A6)        ;open
  227.     MOVE.L    D0,FileHandle
  228.     BEQ.B    rpnskp2
  229.     MOVE.L    D0,D1
  230.     LEA    chkiffbuffer(PC),A2
  231.     CLR.L    (A2)
  232.     MOVE.L    A2,D2
  233.     MOVEQ    #12,D3
  234.     JSR    -$002A(A6)        ;read
  235.     CMPI.L    #'FORM',(A2)
  236.     BNE.B    rpnclse
  237.     CMPI.L    #'8SVX',8(A2)
  238.     BNE.B    rpnclse
  239. rpnvhdr:
  240.     MOVE.L    FileHandle(PC),D1
  241.     MOVE.L    A2,D2
  242.     MOVEQ    #4,D3
  243.     JSR    -$002A(A6)        ;read
  244.     TST.L    D0
  245.     BEQ.B    rpnclse            ;read error
  246.     CMPI.L    #'VHDR',(A2)
  247.     BNE.B    rpnvhdr
  248.     MOVE.L    FileHandle(PC),D1
  249.     MOVE.L    A2,D2
  250.     MOVEQ    #12,D3
  251.     JSR    -$002A(A6)
  252.     MOVE.L    8(A2),D0
  253.     BEQ.B    rpnclse
  254.     LSR.L    #1,D0
  255.     MOVE.W    D0,PresetReplen
  256.     MOVE.L    4(A2),D0
  257.     LSR.L    #1,D0
  258.     MOVE.W    D0,PresetRepeat
  259. rpnclse:
  260.     MOVE.L    FileHandle(PC),D1
  261.     JSR    -$0024(A6)        ;close
  262.  
  263.  
  264. ;----------- both used, for IFF AND RAW -----------
  265. rpnskp2:    BSR.S    AddPreset
  266.         BSR.W    ShowPEDnumbers        ;refresh preset numbers
  267.         BRA.W    IsPLSTFull
  268.  
  269. chkiffbuffer:    dc.l    0,0,0
  270.  
  271. CouldBeInfo:    CMP.B    #$69,(A0)+
  272.         BNE.W    rpnskip
  273.         CMP.B    #$6E,(A0)+
  274.         BNE.W    rpnskip
  275.         CMP.B    #$66,(A0)+
  276.         BNE.W    rpnskip
  277.         CMP.B    #$6F,(A0)+
  278.         BNE.W    rpnskip
  279.         CMP.B    #0,(A0)+
  280.         BNE.W    rpnskip
  281.         BRA.W    IsPLSTFull
  282.  
  283. ReadPathEnd:    MOVE.L    DOSBase(PC),A6
  284.         MOVE.L    FileLock(PC),D1
  285.         BEQ.S    rpeskip
  286.         JSR    -$005A(A6)        ;unlock
  287. rpeskip:    JSR    SetNormalPtrCol
  288.         BSR.W    ShowPresetNames
  289.         BRA.W    ShowAllRight
  290.  
  291. UnlockReadPath:    MOVE.L    DOSBase(PC),A6
  292.         MOVE.L    FileLock(PC),D1
  293.         BEQ.B    urpend
  294.         JSR    -$005A(A6)        ;unlock
  295. urpend:        JMP    SetErrorPtrCol
  296.  
  297. ;----------------------------------------------- add one PLST entry ----
  298. AddPreset:    LEA    PedDefaultVol(PC),A0
  299.         LEA    PresetName(PC),A1
  300.         MOVEQ    #21,D0            ;#5
  301. clearme:    CLR.B    (A1)+
  302.         DBRA    D0,clearme
  303.  
  304.         LEA    PresetName(PC),A1
  305.         MOVEQ    #5,D0            ;disk ST-XX
  306.  
  307. loopos        MOVE.B    (A0)+,(A1)+
  308.         DBRA    D0,loopos
  309.             
  310.         LEA    FIB_FileName,A0
  311.         MOVEQ    #14,D0            ,name 16 letters
  312.  
  313. aploop2:    MOVE.B    (A0)+,D1
  314.         BEQ.S    aploop3
  315.         MOVE.B    D1,(A1)+
  316.         DBRA    D0,aploop2
  317.  
  318. aploop3:    CLR.B    (A1)
  319.  
  320.         MOVE.L    FIB_FileSize,D0
  321.         CMP.L    #$0000FFFE,D0
  322.         BLS.S    apskip2
  323.         MOVE.W    #$FFFE,D0
  324.  
  325. apskip2:    LSR    #1,D0            ;getme
  326.         MOVE    D0,PresetLength
  327.         CLR    PresetFineTune
  328.         LEA    PresetName(PC),A6
  329.         BSR.W    PED_CheckAdd        ;check if real
  330.         ADDQ    #1,PresetTotal
  331.         ADD.L    #30,MaxPLSTOffset
  332.         RTS
  333.  
  334.  
  335. PED_Insert:    TST.L    PLSTmem
  336.         BNE.S    pediwok
  337.         BSR.W    AllocPLST
  338.         TST.L    PLSTmem
  339.         BEQ.W    PLSTMemErr
  340. pediwok:
  341.     MOVE.W    PresetTotal(PC),D0
  342.     CMP.W    MaxPLSTEntries2,D0
  343.     BHS.W    PLSTisFull
  344.     LEA    InsertPsetText(PC),A0
  345.     LEA    PresetName(PC),A1
  346.     MOVEQ    #39,D0
  347. pediloop:
  348.     MOVE.B    (A0)+,(A1)+
  349.     DBRA    D0,pediloop
  350. PossibleEdit:
  351.     JSR    StorePtrCol
  352.     JSR    SetWaitPtrCol
  353.     MOVE.L    TextBplPtr(PC),A0
  354.     LEA    $2320(A0),A0        ;koordinates, 2320*2
  355.     MOVEQ    #59,D0
  356. pediloop2:
  357.     ;CLR.L    (A0)+
  358.     ;DBRA    D0,pediloop2
  359.     LEA    EnterDataText(PC),A0
  360.     BSR.W    ShowStatusText        ;status message
  361.     MOVE.W    #63,LineCurY        ;set cursor
  362.     LEA    PresetName(PC),A6
  363.     MOVEQ    #3,D7
  364.     MOVE.B    #4,EnterTextFlag
  365. ShowPsetText:
  366.     LEA    PresetName+3(PC),A0
  367.     MOVEQ    #37,D0            ;length
  368.     MOVE.W    #2321*2-1,D1        ;#$1221,D1        ;koordinates
  369.     BSR.W    ShowText3        ;print to edit samplenametext
  370.     MOVE.W    D7,D0
  371.     SUBQ.W    #3,D0
  372.     ASL.W    #3,D0
  373.     ADDI.W    #12,D0
  374.     MOVE.W    D0,LineCurX
  375.     JSR    UpdateLineCurPos
  376. pediwaitkey:
  377.     JSR    DoKeyBuffer
  378.     MOVE.B    RawKeyCode(PC),D0
  379.     BEQ.B    pediwaitkey
  380.     JSR    CheckLAmigaKeys
  381.     BTST    #7,D0            ;wait delay
  382.     BNE.B    pediwaitkey
  383.     CLR.B    RawKeyCode
  384.     ANDI.W    #$00FF,D0
  385.     CMPI.B    #$45,D0
  386.     BEQ.W    PED_ESCkey
  387.     CMPI.B    #$41,D0
  388.     BEQ.W    PED_BKspaceKey
  389.     CMPI.B    #$44,D0
  390.     BEQ.W    PED_ReturnKey
  391.     CMPI.B    #$4F,D0
  392.     BEQ.W    PED_LeftArrowKey
  393.     CMPI.B    #$4E,D0
  394.     BEQ.W    PED_RightArrowKey
  395.     CMPI.B    #$40,D0
  396.     BHI.B    pediwaitkey
  397.     CMPI.W    #$0028,D7
  398.     BEQ.B    pediwaitkey
  399.     CMPI.W    #$0016,D7
  400.     BEQ.B    pediwaitkey
  401.  
  402.     tst    keymapmem
  403.     beq.s    itk5
  404.     move.l    keymapmem,A0
  405.     bra.s    itk6
  406.  
  407. itk5:    LEA    UnShiftedKeymap(PC),A0
  408. itk6:    TST.W    ShiftKeyStatus
  409.     BEQ.B    ShiftKeySkip
  410.  
  411.     TST    keymapmem
  412.     beq.s    itk7
  413.     move.l    keymapmem,A0
  414.            add.l    #65,A0
  415.     bra.s   ShiftKeySkip
  416. itk7:
  417.     LEA    ShiftedKeymap(PC),A0
  418. ;------
  419. ShiftKeySkip:
  420.     MOVE.B    (A0,D0.W),D1
  421.     BEQ.W    pediwaitkey
  422.     CMPI.W    #6,D7
  423.     BCS.B    ShiftedKeySkip2
  424.     CMPI.W    #$0019,D7
  425.     BCS.B    PED_PrintChar
  426. ShiftedKeySkip2:
  427.     CMPI.B    #$30,D1
  428.     BCS.W    pediwaitkey
  429.     CMPI.B    #$66,D1
  430.     BHI.W    pediwaitkey
  431.     CMPI.B    #$39,D1
  432.     BLS.B    PED_PrintChar
  433.     CMPI.B    #$61,D1
  434.     BCC.B    PED_PrintChar
  435.     BRA.W    pediwaitkey
  436.  
  437. PED_PrintChar:
  438.     MOVE.B    D1,(A6,D7.W)
  439.     BRA.W    PED_RightArrowKey
  440.  
  441. PED_ReturnKey:
  442.     CMPI.B    #' ',(PsetNameText)
  443.     BEQ.B    PED_ESCkey
  444.     LEA    PsetVolText,A0
  445.     LEA    fitutexttab+32(PC),A1
  446.     MOVE.B    (A0)+,D1
  447.     LSL.W    #8,D1
  448.     MOVE.B    (A0),D1
  449.     MOVEQ    #15,D0
  450. vofloop:
  451.     CMP.W    -(A1),D1
  452.     BEQ.B    vofound
  453.     DBRA    D0,vofloop
  454.     MOVEQ    #0,D0
  455. vofound:
  456.     MOVE.W    D0,PresetFineTune
  457.     LEA    PsetLenText(PC),A0
  458.     BSR.W    HexToInteger
  459.     LSR.W    #1,D0
  460.     MOVE.W    D0,PresetLength
  461.     LEA    PsetRepeatText(PC),A0
  462.     BSR.W    HexToInteger
  463.     LSR.W    #1,D0
  464.     MOVE.W    D0,PresetRepeat
  465.     LEA    PsetReplenText(PC),A0
  466.     BSR.W    HexToInteger
  467.     LSR.W    #1,D0
  468.     MOVE.W    D0,PresetReplen
  469.     BSR.W    PED_CheckAdd
  470.     ADDQ.W    #1,PresetTotal
  471. PED_ESCkey:
  472.     CLR.W    LineCurX
  473.     MOVE.W    #$010E,LineCurY
  474.     JSR    UpdateLineCurPos
  475.     BSR.W    ShowPresetNames
  476.     BSR.W    ShowPEDnumbers
  477.     BSR.W    ShowAllRight
  478.     CLR.B    EnterTextFlag
  479.     JMP    RestorePtrCol
  480.  
  481. PED_BKspaceKey:
  482.     CMPI.W    #$0017,D7
  483.     BCC.B    pedbsend
  484.     CMPI.W    #6,D7
  485.     BLS.B    pedbsend
  486.     SUBQ.W    #1,D7
  487.     MOVE.B    #$20,(A6,D7.W)
  488. pedbsend:
  489.     BRA.W    ShowPsetText
  490.  
  491. PED_LeftArrowKey:
  492.     SUBQ.W    #1,D7
  493.     CMPI.W    #2,D7
  494.     BLS.B    pedlakskip2
  495.     CMPI.W    #5,D7
  496.     BEQ.B    pedlakskip
  497.     CMPI.W    #$0016,D7
  498.     BEQ.B    pedlakskip
  499.     CMPI.W    #$0019,D7
  500.     BEQ.B    pedlakskip
  501.     CMPI.W    #$001E,D7
  502.     BEQ.B    pedlakskip
  503.     CMPI.W    #$0023,D7
  504.     BEQ.B    pedlakskip
  505.     BRA.W    ShowPsetText
  506.  
  507. pedlakskip:
  508.     SUBQ.W    #1,D7
  509.     BRA.W    ShowPsetText
  510.  
  511. pedlakskip2:
  512.     MOVEQ    #3,D7
  513.     BRA.W    ShowPsetText
  514.  
  515. PED_RightArrowKey:
  516.     ADDQ.W    #1,D7
  517.     CMPI.W    #5,D7
  518.     BEQ.B    pedrakskip
  519.     CMPI.W    #$0016,D7
  520.     BEQ.B    pedrakskip
  521.     CMPI.W    #$0019,D7
  522.     BEQ.B    pedrakskip
  523.     CMPI.W    #$001E,D7
  524.     BEQ.B    pedrakskip
  525.     CMPI.W    #$0023,D7
  526.     BEQ.B    pedrakskip
  527.     CMPI.W    #$0028,D7
  528.     BCC.B    pedrakskip3
  529.     BRA.W    ShowPsetText
  530.  
  531. pedrakskip:
  532.     ADDQ.W    #1,D7
  533.     BRA.W    ShowPsetText
  534.  
  535. pedrakskip3:
  536.     MOVEQ    #$27,D7
  537.     BRA.W    ShowPsetText
  538.  
  539. ;------------- check addpreset
  540. PED_CheckAdd:                ;23 length
  541.     MOVEQ    #$17,D0            ;max length of sample name in PED list
  542. pedcaloop:
  543.     SUBQ.W    #1,D0            ;-1
  544.     CMP.B    #' ',0(A6,D0.W)        ;space ?
  545.     BEQ.B    pedcaloop        ;yep, one back
  546.     CLR.B    1(A6,D0.W)
  547.     MOVEA.L    PLSTmem(PC),A5
  548.     SUB    #30,A5            ;fix
  549.     LEA    30(A5),A5
  550. pedccnextloop:
  551.     MOVEQ    #6,D0
  552.     TST.B    6(A5)
  553.     BEQ.S    PED_AddPreset
  554. PED_ConvertLoop:
  555.     MOVE.B    (A5,D0.W),D2
  556.     BNE.S    PED_ConvertCase
  557.     TST.B    (A6,D0.W)
  558.     BNE.S    PED_ConvertCase
  559.     CLR.B    6(A5)
  560.     SUBQ    #1,PresetTotal
  561.     BRA.S    PED_AddPreset
  562.  
  563. PED_ConvertCase:
  564.     CMP.B    #'A',D2
  565.     BCS.S    pedccskip
  566.     CMP.B    #'Z',D2
  567.     BHI.S    pedccskip
  568.     ADD.B    #32,D2
  569. pedccskip:
  570.     MOVE.B    0(A6,D0.W),D1
  571.     ;CMP.B    #' ',D1
  572.     ;BEQ.S    pedccskip3
  573.     CMP.B    #'A',D1
  574.     BCS.S    pedccskip2
  575.     CMP.B    #'Z',D1
  576.     BHI.S    pedccskip2
  577.     ADD.B    #32,D1
  578. pedccskip2:
  579.     CMP.B    D2,D1
  580.     BEQ.S    pedccnext
  581.     BHI.S    pedccskip3
  582.     BRA.S    PED_AddPreset
  583.  
  584. pedccnext:
  585.     ADDQ    #1,D0
  586.     CMP.W    #$0016,D0
  587.     BNE.B    PED_ConvertLoop
  588. pedccskip3:
  589.     LEA    30(A5),A5
  590.     BRA.B    pedccnextloop
  591.  
  592. PED_AddPreset:
  593.     TST.B    6(A5)            ;file already in PLST?
  594.     BEQ.S    pedapskip        ;yep, skip it
  595.     MOVE.L    PLSTmem(PC),A1
  596.     SUB    #30,A1            ;fix!
  597.     MOVE    PresetTotal(PC),D0
  598.     BEQ.S    pedapskip
  599.     MULU    #30,D0
  600.     ADDA.L    D0,A1
  601.     LEA    30(A1),A1
  602.     CLR.B    31(A1)
  603. pedaploop:
  604.     MOVE    (A1),30(A1)
  605.     SUBQ.L    #2,A1
  606.     CMP.L    A1,A5
  607.     BLS.B    pedaploop
  608. pedapskip:
  609.     MOVEQ    #21,D0
  610. pedaploop2:
  611.     MOVE.B    (A6,D0.W),D1
  612.     ADD.B    #32,D1            ;fix
  613.     CMP.B    #'A',D1
  614.     BCS.S    pedapskip2
  615.     CMP.B    #'Z',D1
  616.     ;BHI    pedapskip2
  617.     ;ADD.B    #32,D1            ;fix
  618. pedapskip2:
  619.     SUB.B    #32,D1            ;fix
  620.     ;CMP.B    #' ',D1            ;space?
  621.     ;BNE.S    pedapskip3
  622.     CMP.B    #$00,D1            ;fix
  623.     BNE.S    pedapskip3        ;fix
  624.     MOVEQ    #0,D1
  625. pedapskip3:
  626.     MOVE.B    D1,(A5,D0.W)
  627.     DBRA    D0,pedaploop2
  628.     MOVE.W    PresetLength(PC),$0016(A5)
  629.     MOVE.B    PresetFineTune+1(PC),$0018(A5)
  630.     MOVE.B    #$40,$0019(A5)
  631.     MOVE.W    PresetRepeat(PC),$001A(A5)
  632.     MOVE.W    PresetReplen(PC),$001C(A5)
  633.     RTS
  634.  
  635. HexToInteger:    MOVEQ    #0,D0
  636.         BSR.S    Single_hti
  637.         LSL    #8,D1
  638.         LSL    #4,D1
  639.         OR    D1,D0
  640.         BSR.S    Single_hti
  641.         LSL    #8,D1
  642.         OR    D1,D0
  643.  
  644. HexToInteger2:    BSR.S    Single_hti
  645.         LSL    #4,D1
  646.         OR    D1,D0
  647.         BSR.S    Single_hti
  648.         OR    D1,D0
  649.         RTS
  650.  
  651. Single_hti:    MOVEQ    #0,D1
  652.         MOVE.B    (A0)+,D1
  653.         CMP.B    #$60,D1
  654.         BCS.S    shtiskip
  655.         SUB.B    #$20,D1
  656.  
  657. shtiskip:    SUB.B    #$30,D1
  658.         CMP.B    #9,D1
  659.         BLS.S    reet
  660.         SUBQ.B    #7,D1
  661. reet:        RTS
  662.  
  663. PED_Delete:    JSR    SetDeletePtrCol
  664.         MOVE.W    #1,PED_Action
  665.         LEA    SelectEntryText(PC),A0
  666.         BRA.W    ShowStatusText
  667.  
  668. PED_ClearPLST:    LEA    ClearPLSTText,A0
  669.         JSR    AreYouSure
  670.         BEQ.B    PED_ClearPLST2
  671.         RTS
  672.  
  673. PED_ClearPLST2:    BSR.W    FreePLST
  674.         BRA.W    PED_Refresh
  675.  
  676. ClearPLSTText:    dc.b    10,10,10,'    Clear the PLST?',0,0
  677.  
  678. PED_Print:
  679.     LEA    PrintPLSTText,A0
  680.     JSR    AreYouSure
  681.     BEQ.B    PED_Print2
  682.     RTS
  683.  
  684. PED_Print2:
  685.     JSR    StorePtrCol
  686.     MOVEA.L    DOSBase,A6
  687.     MOVE.L    #PrintPath,D1
  688.     MOVE.L    #$000003EE,D2
  689.     JSR    -$001E(A6)        ;Open
  690.     MOVE.L    D0,FileHandle
  691.     BEQ.W    CantOpenFile
  692.     JSR    SetDiskPtrCol
  693.     MOVE.L    D0,D1
  694.     MOVE.L    #PsetPLSTtext,D2
  695.     MOVEQ    #$38,D3
  696.     JSR    -$0030(A6)        ;Write
  697.     LEA    PrintingPLSTText(PC),A0
  698.     BSR.W    ShowStatusText
  699.     CLR.W    PsetNumTemp
  700. pedpmainloop:
  701.     MOVE.W    PsetNumTemp(PC),D0
  702.     LEA    PsetPrtNumText(PC),A0
  703.     BSR.W    IntToDecASCII        ;2 jumps
  704.     MOVEA.L    PLSTmem(PC),A0
  705.     SUB    #30,A0            ;fix
  706.     MOVE.W    PsetNumTemp(PC),D0
  707.     MULU.W    #30,D0
  708.     ADDA.L    D0,A0
  709.     MOVE.L    A0,PsetPtrTemp
  710.     LEA    PsetPrtNameText(PC),A1
  711.     MOVEA.L    A1,A2
  712.     MOVEQ    #$13,D1
  713. FillSpaceLoop:
  714.     MOVE.B    #' ',(A2)+
  715.     DBRA    D1,FillSpaceLoop
  716.     MOVEQ    #$13,D1
  717. pedploop:
  718.     TST.B    (A0)
  719.     BEQ.B    pedpskip
  720.     MOVE.B    (A0)+,(A1)+
  721.     DBRA    D1,pedploop
  722. pedpskip:
  723.     MOVEA.L    PsetPtrTemp(PC),A1
  724.     MOVE.W    $0016(A1),D0
  725.     LEA    PsetPrtLenText(PC),A0
  726.     BSR.W    IntToHexASCII
  727.     MOVEA.L    PsetPtrTemp(PC),A1
  728.     MOVE.W    $001A(A1),D0
  729.     LEA    PsetPrtRepeatText(PC),A0
  730.     BSR.W    IntToHexASCII
  731.     MOVEA.L    PsetPtrTemp(PC),A1
  732.     MOVE.W    $001C(A1),D0
  733.     ADD.W    D0,D0
  734.     LEA    PsetPrtRepLenText(PC),A0
  735.     BSR.B    IntToHexASCII
  736.     MOVE.L    FileHandle(PC),D1
  737.     MOVE.L    #PsetPrtNumText,D2
  738.     MOVEQ    #$35,D3
  739.     JSR    -$0030(A6)        ;Write
  740.     BTST    #2,$00DFF016
  741.     BEQ.B    AbortPLSTPrint
  742.     ADDQ.W    #1,PsetNumTemp
  743.     MOVE.W    PsetNumTemp(PC),D0
  744.     CMP.W    PresetTotal(PC),D0
  745.     BNE.W    pedpmainloop
  746.     BRA.B    pedpend
  747.  
  748. AbortPLSTPrint:
  749.     LEA    OprAbortedText(PC),A0
  750.     BSR.W    ShowStatusText
  751.     JSR    SetErrorPtrCol
  752. pedpend:
  753.     MOVE.L    FileHandle(PC),D1
  754.     JSR    -$0024(A6)        ;close
  755.     BSR.W    ShowAllRight
  756.     JMP    RestorePtrCol
  757.  
  758. IntToDecASCII:
  759.     MOVEQ    #3,D3
  760.     MOVE.L    #$000003E8,D2
  761. itdloop:
  762.     EXT.L    D0
  763.     DIVU.W    D2,D0
  764.     ADDI.B    #$30,D0
  765.     MOVE.B    D0,(A0)+
  766.     DIVU.W    #10,D2
  767.     SWAP    D0
  768.     DBRA    D3,itdloop
  769.     RTS
  770.  
  771. IntToHex2:
  772.     MOVEQ    #1,D2
  773.     BRA.B    ithaloop
  774.  
  775. IntToHexASCII:
  776.     MOVEQ    #3,D2
  777. ithaloop:
  778.     MOVE.W    D0,D1
  779.     ANDI.B    #15,D1
  780.     CMPI.B    #10,D1
  781.     BCS.B    ithaskip
  782.     ADDQ.B    #7,D1
  783. ithaskip:
  784.     ADDI.B    #'0',D1
  785.     MOVE.B    D1,-(A0)
  786.     ROR.W    #4,D0
  787.     DBRA    D2,ithaloop
  788.     RTS
  789.  
  790. WritePLST:
  791.     LEA    SavePLSTText,A0
  792.     JSR    AreYouSure
  793.     BEQ.B    WritePLST2
  794.     RTS
  795.  
  796. WritePLST2:
  797.     JSR    StorePtrCol
  798.     JSR    SetDiskPtrCol
  799.     LEA    SavingPLSTText(PC),A0
  800.     BSR.W    ShowStatusText
  801.     LEA    PTPath,A0
  802.     JSR    CopyPath
  803.     LEA    PLSTName(PC),A0
  804.     MOVEQ    #4,D0
  805. dsploop:
  806.     MOVE.B    (A0)+,(A1)+
  807.     DBRA    D0,dsploop
  808.     MOVE.L    #FileName,D1
  809.     MOVE.L    #$000003EE,D2
  810.     MOVEA.L    DOSBase,A6            ;DOSBase
  811.     JSR    -$001E(A6)            ;Open
  812.     MOVE.L    D0,D7
  813.     BEQ.W    CantOpenFile
  814.     MOVE.L    D0,D1
  815.     MOVE.L    PLSTmem(PC),D2
  816.     MOVE.W    PresetTotal(PC),D3
  817.     MULU.W    #$001E,D3
  818.     JSR    -$0030(A6)            ;Write
  819.     MOVE.L    D7,D1
  820.     JSR    -$0024(A6)            ;Close
  821.     BSR.W    ShowAllRight
  822.     JMP    RestorePtrCol
  823.  
  824. CheckPEDnames:
  825.     BSR.W    PED_PsetHit        ,check the clicked filename
  826.     CLR    PED_Action
  827.     JSR    SetNormalPtrCol
  828.     RTS
  829.  
  830.  
  831. PED_OneUp:
  832.     SUBQ.W    #1,PEDPos
  833.     TST.W    ShiftKeyStatus
  834.     BNE.B    poup2
  835.     JSR    Wait_4000
  836.     BTST    #2,$00DFF016
  837.     BNE.B    pedouskip
  838. poup2:
  839.     SUBQ.W    #7,PEDPos
  840. pedouskip:
  841.     CMP.W    #1,PEDPos        ;fix
  842.     BGE.B    ShowPresetNames
  843. PED_Top:
  844.     MOVE.W    #1,PEDPos
  845.     BRA.B    ShowPresetNames
  846.  
  847. PED_OneDown:
  848.     CMP.W    #9,PresetTotal
  849.     BCS.B    ShowPresetNames
  850.     JSR    Wait_4000
  851.     ADDQ.W    #1,PEDPos
  852.     TST.W    ShiftKeyStatus
  853.     BNE.B    podn2
  854.     BTST    #2,$00DFF016
  855.     BNE.B    pedodskip
  856. podn2:
  857.     ADDQ.W    #7,PEDPos
  858. pedodskip:
  859.     MOVE.W    PresetTotal,D0
  860.     SUBI.W    #10,D0
  861.     CMP.W    PEDPos,D0
  862.     BCC.B    ShowPresetNames
  863. pedodsx:
  864.     MOVE.W    D0,PEDPos
  865.     BRA.B    ShowPresetNames
  866.  
  867. PED_Bottom:
  868.     MOVE.W    PresetTotal(PC),D0
  869.     SUBI.W    #11,D0
  870.     BMI.B    PED_Top
  871.     ADDQ.W    #1,D0
  872.     BRA.B    pedodsx
  873.  
  874. ShowPresetNames:
  875.     BSR.W    DctMainScr1_7
  876.     CMP.W    #0,PresetTotal        ;plst empty?
  877.     BEQ.S    mekka            ;yes
  878.  
  879.     MOVE.W    #2321,D6        ;old #$1221 y-position global list
  880.     MOVEQ    #9,D7            ; max line numbers
  881.     MOVE.L    PLSTmem(PC),D0
  882.     SUB    #30,D0            ;fix
  883.     BNE.B    ShowPresetNames2
  884. mekka:    RTS
  885.  
  886. ShowPresetNames2:
  887.     MOVEA.L    D0,A5
  888.     MOVE.W    PEDPos(PC),D0
  889.     MULU.W    #30,D0
  890.     ADDA.L    D0,A5
  891. spndploop:
  892.     TST.B    (A5)
  893.     BNE.B    spndploop2
  894.     RTS
  895.  
  896. spndploop2:
  897.     LEA    PresetNameText,A1
  898.     MOVEQ    #$15,D0
  899. spnloop:
  900.     MOVE.B    #' ',(A1)+        ;empty string
  901.     DBRA    D0,spnloop
  902.     MOVEA.L    A5,A0
  903.     ADDQ.L    #3,A0
  904.     LEA    -$0016(A1),A1
  905. spnloop2:
  906.     MOVE.B    (A0)+,D0
  907.     BEQ.B    DisplayPreset
  908.     MOVE.B    D0,(A1)+
  909.     BRA.B    spnloop2
  910.  
  911. fitutexttab:
  912.     dc.b    ' 0+1+2+3+4+5+6+7-8-7-6-5-4-3-2-1'
  913.  
  914. ;--------- output for PED listview --------------------
  915.  
  916. DisplayPreset:
  917.     MOVE    #19,TextLength
  918.     LEA    PresetNameText,A0        ;sample name text
  919.     MOVE    D6,D1
  920.     MULU    #2,D1                ;fix offset*2 new for 3.30
  921.     SUB    #1,D1
  922.     MOVE    D1,TextOffset
  923.     BSR.W    ShowText2            ;fix old Showtext3
  924.  
  925.     ADD    #20,D6
  926.     MOVE    D6,TextOffset
  927.     MOVEQ    #0,D0
  928.     MOVE.B    24(A5),D0
  929.     AND.B    #$0F,D0
  930.     ADD    D0,D0
  931.     LEA    fitutexttab(PC,D0.W),A0
  932.  
  933.     MOVE    #2,TextLength            ;length
  934.     MOVE    D6,D1                ;fix new
  935.     MULU    #2,D1                ;fix new
  936.     SUB    #21,D1                ;fix new
  937.     MOVE    D1,TextOffset            ;fix new
  938.  
  939.     BSR.W    ShowText2            ;fix sample finetune text
  940.     MOVE    22(A5),D0
  941.     ADD    D0,D0
  942.     MOVE    D0,WordNumber
  943.     ADDQ    #1,TextOffset
  944.     BSR.W    PrintHexWord            ;sample length text
  945.     MOVE    26(A5),D0
  946.     ADD    D0,D0
  947.     MOVE    D0,WordNumber
  948.     ADDQ    #1,TextOffset
  949.     BSR.W    PrintHexWord            ;sample repeat text
  950.     MOVE    28(A5),D0
  951.     ADD    D0,D0
  952.     MOVE    D0,WordNumber
  953.     ADDQ    #1,TextOffset
  954.     BSR.W    PrintHexWord            ;sample replen text
  955.     ADDI.W    #$00DC,D6
  956.     LEA    $001E(A5),A5
  957.     DBRA    D7,spndploop
  958.     RTS
  959.  
  960. PED_EnterPath:
  961.     MOVE    #$12,D1
  962.     JSR    StorePtrCol
  963.     JSR    SetWaitPtrCol
  964.     CLR.L    EditMode
  965.     LEA    PEdDefaultPath,A6    ;old 6
  966.     JSR    UpdateLineCurPos
  967.     MOVE.L    A6,TextEndPtr
  968.     MOVE.L    A6,ShowTextPtr
  969.     ADD.L    #31,TextEndPtr
  970.     MOVE.W    #20,TextLength
  971.  
  972.     MOVE.L    #178*2-18,A4            ;fix x-position entertext
  973.     
  974.     JSR    GetTextLine
  975.     CLR.L    TextEndPtr
  976.     JMP    RestorePtrCol
  977.  
  978. PED_Disk:
  979.     JSR    StorePtrCol
  980.     JSR    SetWaitPtrCol
  981.     CLR.L    EditMode
  982.     CLR.B    SndDiskNum0
  983.     CLR.B    SndDiskNum1
  984.     LEA    SndDiskNum0(PC),A6
  985.     MOVE.L    A6,TextEndPtr
  986.     MOVE.L    A6,ShowTextPtr
  987.     ADDQ.L    #2,TextEndPtr
  988.     MOVE.W    #2,TextLength
  989.     MOVEA.L    #$000004C5,A4
  990.     MOVE.B    #3,EnterTextFlag
  991.     JSR    GetTextLine
  992.     LEA    SndDiskNum0(PC),A6
  993.     MOVE.B    #':',2(A6)
  994.     CLR.B    EnterTextFlag
  995.     CLR.L    TextEndPtr
  996.     JMP    RestorePtrCol
  997.  
  998. ShowPEDnumbers:
  999.     MOVE.W    PresetTotal,WordNumber
  1000.     MOVE.W    #$0835,TextOffset
  1001.     BSR.W    Print4DecDigits                ;preset numbers
  1002.     LEA    PEdDefaultPath,A0            ;PEdDefaultPath
  1003.     MOVE.W    #$0152,D1
  1004.     MOVEQ    #$14,D0
  1005.     BSR.W    ShowText3                ;default path
  1006.     LEA    PedDefaultVol,A0
  1007.     MOVE.W    #$04C2,D1
  1008.     MOVEQ    #6,D0
  1009.     BRA.W    ShowText3
  1010.  
  1011. PED_PsetHit:    CMP    #1,PresetTotal            ;PLST empty ?
  1012.         BEQ.S    pedphend
  1013.  
  1014.         MOVE    MouseX2(PC),D0
  1015.         MOVE    D1,D0
  1016.         SUB     #59,D0
  1017.         DIVU    #6,D0
  1018.         MOVE.L    D0,D1
  1019.         SWAP    D1
  1020.         CMP    #5,D1
  1021.         BEQ.S    pedphend
  1022.         MOVE    D0,D2
  1023.  
  1024.         ADD    PEDPos(PC),D2
  1025.         CMP    PresetTotal(PC),D2    ;how many
  1026.         BHI.S    pedphend
  1027.         MULU    #30,D0            ;xposition mem
  1028.         MOVE.L    PLSTmem(PC),A5
  1029.         ADD.L    D0,A5
  1030.         MOVE    PEDPos(PC),D0
  1031.         SUB    #1,D0
  1032.         MULU    #30,D0
  1033.         ADD.L    D0,A5
  1034.         TST    PED_Action
  1035.         BEQ.S    PED_CopyName
  1036.         CMP.W    #1,PED_Action
  1037.         BEQ.S    PED_DoDelete
  1038. pedphend:    RTS
  1039.  
  1040. PED_CopyName:    LEA    PresetName(PC),A0
  1041.         MOVEQ    #21,D0
  1042.  
  1043. pedcnloop:    MOVE.B    (A5)+,D1
  1044.         BNE.S    pedcnskip
  1045.         MOVE.B    #' ',D1
  1046. pedcnskip:
  1047.     MOVE.B    D1,(A0)+
  1048.     DBRA    D0,pedcnloop
  1049.     MOVEQ    #0,D0
  1050.     MOVE.B    2(A5),D0
  1051.     ANDI.B    #$0F,D0
  1052.     ADD.W    D0,D0
  1053.     LEA    fitutexttab(PC),A1
  1054.     LEA    (A1,D0.W),A1
  1055.     LEA    PsetVolText,A0
  1056.     MOVE.B    #' ',-1(A0)
  1057.     MOVE.B    (A1)+,(A0)+
  1058.     MOVE.B    (A1),(A0)
  1059.     MOVE.W    (A5),D0
  1060.     ADD.W    D0,D0
  1061.     LEA    6(A0),A0
  1062.     BSR.W    IntToHexASCII
  1063.     MOVE.W    4(A5),D0
  1064.     ADD.W    D0,D0
  1065.     LEA    9(A0),A0
  1066.     BSR.W    IntToHexASCII
  1067.     LEA    9(A0),A0
  1068.     MOVE.W    6(A5),D0
  1069.     ADD.W    D0,D0
  1070.     BSR.W    IntToHexASCII
  1071.     BRA.W    PossibleEdit
  1072.  
  1073. PED_DoDelete:
  1074.     CLR.W    PED_Action
  1075.     LEA    DeletePresetText,A0
  1076.     JSR    AreYouSure
  1077.     BEQ.B    PED_DoDelete2
  1078.     RTS
  1079.  
  1080. PED_DoDelete2:
  1081.     MOVEA.L    PLSTmem(PC),A1
  1082.     MOVE.W    PresetTotal(PC),D0
  1083.     MULU.W    #$001E,D0
  1084.     ADDA.L    D0,A1
  1085. pedddloop:
  1086.     MOVE    30(A5),(A5)
  1087.     ADDQ.L    #2,A5
  1088.     CMP.L    A5,A1
  1089.     BHI.S    pedddloop
  1090.     CLR.B    (A5)
  1091.     SUBQ    #1,PresetTotal
  1092.     SUB.L    #30,MaxPLSTOffset
  1093.     MOVE    PEDPos(PC),D0
  1094.     ADD    #9,D0
  1095.     CMP    PresetTotal(PC),D0
  1096.     BHI.S    pedddskip
  1097.     SUBQ    #1,PEDPos
  1098.  
  1099. pedddskip:
  1100.     BSR.W    ShowPEDnumbers
  1101.     BSR.W    PED_OneUp
  1102.     BSR.W    ShowPresetNames
  1103.     JSR    SetNormalPtrCol
  1104.     JSR    StorePtrCol
  1105.     RTS
  1106.  
  1107. ;sepc:    JMP    SetErrorPtrCol        ;not used
  1108.  
  1109. PLSTisFull:
  1110.     LEA    PLSTFullText(PC),A0
  1111.     BSR.W    ShowStatusText
  1112.     JMP    SetErrorPtrCol
  1113.  
  1114. PED_DeleteDisk:
  1115.     LEA    DelDiskText(PC),A0
  1116.     MOVE.B    SndDiskNum0(PC),10(A0)
  1117.     MOVE.B    SndDiskNum1(PC),11(A0)
  1118.     JSR    AreYouSure
  1119.     BEQ.B    PED_DelDD2
  1120.     RTS
  1121.  
  1122. PED_DelDD2:
  1123.     JSR    StorePtrCol
  1124.     JSR    SetWaitPtrCol
  1125.     MOVEA.L    PLSTmem(PC),A0
  1126.     MOVEA.L    A0,A1
  1127.     MOVE.W    PresetTotal(PC),D0
  1128.     MULU.W    #$001E,D0
  1129.     ADDA.L    D0,A1
  1130.     MOVE.L    SndDiskNum0-1(PC),D1        ;SndDiskNum0-1
  1131.     MOVE.L    #$FF5F5FFF,D2
  1132.     AND.L    D2,D1
  1133. peddslo:
  1134.     MOVE.L    2(A0),D0
  1135.     AND.L    D2,D0
  1136.     CMP.L    D1,D0
  1137.     BNE.B    peddsno
  1138.     MOVEA.L    A0,A2
  1139. peddslp:
  1140.     MOVE.W    $001E(A0),(A0)+
  1141.     CMPA.L    A1,A0
  1142.     BCS.B    peddslp
  1143.     SUBQ.W    #1,PresetTotal
  1144.     SUBI.L    #30,MaxPLSTOffset
  1145.     MOVEA.L    A2,A0
  1146.     BRA.B    peddsn1
  1147.  
  1148. peddsno:
  1149.     LEA    30(A0),A0
  1150. peddsn1:
  1151.     CMPA.L    A1,A0
  1152.     BCS.B    peddslo
  1153.     MOVE.W    #1,PEDPos
  1154.     BSR.W    ShowPEDnumbers
  1155.     BSR.W    ShowPresetNames
  1156.     JMP    RestorePtrCol
  1157.  
  1158. DelDiskText:
  1159.     dc.b    'Delete ST-.. ?',0,0
  1160.